import { IPSDEActionParam } from './ipsdeaction-param';
import { IPSDEField } from '../defield/ipsdefield';
import { IPSDEMethodDTO } from '../service/ipsdemethod-dto';
import { IPSDEMethodInput } from '../service/ipsdemethod-input';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEActionInput
 */
export interface IPSDEActionInput extends IPSDEMethodInput {
  /**
   * 主键属性对象
   *
   * @type {IPSDEField}
   */
  getKeyPSDEField(): IPSDEField | null;

  /**
   * 主键属性对象
   *
   * @type {IPSDEField}
   */
  get keyPSDEField(): IPSDEField | null;

  /**
   * 主键属性对象（必须存在）
   *
   * @type {IPSDEField}
   */
  getKeyPSDEFieldMust(): IPSDEField;

  /**
   * 行为参数集合
   *
   * @type {IPSDEActionParam[]}
   */
  getPSDEActionParams(): IPSDEActionParam[] | null;

  /**
   * 行为参数集合
   *
   * @type {IPSDEActionParam[]}
   */
  get psDEActionParams(): IPSDEActionParam[] | null;

  findPSDEActionParam(objKey: any): IPSDEActionParam | null;

  /**
   * 实体方法DTO对象
   *
   * @type {IPSDEMethodDTO}
   */
  getPSDEMethodDTO(): IPSDEMethodDTO | null;

  /**
   * 实体方法DTO对象
   *
   * @type {IPSDEMethodDTO}
   */
  get psDEMethodDTO(): IPSDEMethodDTO | null;

  /**
   * 实体方法DTO对象（必须存在）
   *
   * @type {IPSDEMethodDTO}
   */
  getPSDEMethodDTOMust(): IPSDEMethodDTO;

  /**
   * 输入对象同时为结果对象
   * @type {boolean}
   * @default false
   */
  output: boolean;
}
